home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 November / EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso / earcd / gfx / vtdevel3.lha / SourceAGA / Equalizer.s < prev    next >
Text File  |  1994-06-27  |  45KB  |  2,159 lines

  1.  
  2. rout            ;when this is off, the routine-file will be
  3.             ;assembled, on=testing
  4.             
  5. ;debug            ;when this is on, colors in the background will
  6.             ;show how much time the routine needs.
  7.  
  8. ;ntsctest        ;when this is on, the routineplayer is in ntsc-mode
  9.  
  10. ;ocs            ;off=AGA,on=OCS, testing not possible on OCS !
  11.  
  12. routinemode    equ    300    ;the routinemode !
  13.  
  14.  
  15. ; VideoTracker AGA developer source 25-12-93
  16. ; 24-bits colors, Super-HiRes, HAM8, maximum burstmode (64 pixels aligned)
  17. ; wich makes low-resolution overscan a bit ugly.
  18. ; no "interactive" support anymore, it's only used by Kick 1.3 users.
  19.  
  20. ; the first part of the source handles the things that are necessary to
  21. ; show the picture/copper and playing of the routine.
  22. ; the part between the "***" lines is the routine-source.
  23. ; at the bottom of the file, there are the necessary incbin-files who
  24. ; are needed to test the routine.
  25. ; these are saved with "save effect" in videotracker. they are raw
  26. ; data files which can be fonts,pictures,landscapes,vectorobjects
  27. ; etcetra.
  28. ; the incbin-files are put in the "variables" table, in the routine-
  29. ; player-handler
  30. ; the place where it's done can be found by searching for "!!!"
  31.  
  32. ;    opt    a+    ;devpac 3 optimize
  33.     opt    o+
  34.  
  35. vew_wid    equ    48
  36. vew_hgt    equ    290
  37. win_hgt    equ    117
  38. win_str    equ    $1a
  39.  
  40.         ifd    ocs
  41. pic_wid        equ    4        ;wide in bytes
  42. pic_hgt        equ    6        ;hoogte
  43. pic_dpt        equ    8        ;number planes
  44. pic_ani        equ    10        ;aantal effes (anim)
  45. pic_vew        equ    12        ;viewmode
  46. pic_cycstr    equ    14        ;cycle start (*4)
  47. pic_cycend    equ    15        ;cycle end (*4)
  48. pic_cycspd    equ    16        ;cycle speed (*4)
  49. pic_cycadd    equ    17        ;cycle add (*4)
  50. pic_palnum    equ    30        ;aantal kleuren
  51. pic_pal        equ    32        ;palette start
  52. pic_palsiz    equ    256*2        ;vaste palette size
  53. pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  54.         endc
  55.         
  56.         ifnd    ocs
  57. pic_wid        equ    4        ;wide in bytes
  58. pic_hgt        equ    6        ;hoogte
  59. pic_dpt        equ    8        ;number planes
  60. pic_ani        equ    10        ;aantal effes (anim)
  61. pic_vew        equ    12        ;viewmode
  62. pic_cycstr    equ    14        ;cycle start (*8)
  63. pic_cycend    equ    15        ;cycle end (*8)
  64. pic_cycspd    equ    16        ;cycle speed (*8)
  65. pic_cycadd    equ    17        ;cycle add (*8)
  66. pic_widmod    equ    46        ;animation-width modulo
  67. pic_future    equ    50        ;free future space
  68. pic_palnum    equ    62        ;aantal kleuren
  69. pic_pal        equ    64        ;palette start
  70. pic_palsiz    equ    256*4        ;vaste palette size (longwords)
  71. pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  72.         endc
  73.         
  74. var_len        equ    $300        ;lengte vartabel
  75.  
  76. var__GfxBase    equ    $000        ;graphics lib
  77. var_pic1    equ    $004        ;current picture
  78. var_anispd1    equ    $008        ;animspeed
  79. var_anitel1    equ    $00c        ;animcount
  80. var_cprbck    equ    $010        ;copperback
  81. var_bck        equ    $014        ;background
  82. var_pic2    equ    $018        ;current picture
  83. var_ntsc    equ    $01c        ;ntsc/pal frequence
  84. var_lnd        equ    $020        ;landscape
  85. var_anilop1    equ    $024
  86. var_rottrg    equ    $028        ;effect trigger
  87. var_txt1    equ    $040        ;text
  88. var_txt16    equ    15*4+var_txt1
  89. var_vec1    equ    $080        ;vectors
  90. var_vec16    equ    15*4+var_vec1
  91. var_fon1    equ    $0c0        ;fonts
  92. var_fon16    equ    15*4+var_fon1
  93. var_cols1    equ    $100        ;colorsets
  94. var_cols16    equ    15*4+var_cols1
  95. var_obj1    equ    $180        ;objects
  96. var_obj16    equ    15*4+var_obj1
  97.  
  98. var_audstr    equ    $1c0        ; start (*4) .l
  99. var_audlen    equ    $1c4        ; length (*4) .w
  100. var_audper    equ    $1c8        ; period (*4) .w
  101. var_audcnt    equ    $1cc        ; counter (*4) .w
  102. var_audlopstr    equ    $1d0        ; loop (*4) .w
  103. var_audreplen    equ    $1d4        ; loopstart (*4) .w
  104.  
  105. var_end        equ    $240
  106.  
  107.     ifd    rout
  108.     ;videotracker routine-test
  109.  
  110.     incdir    "w:include/"
  111.     include    "exec/types.i"
  112.     include    "graphics/gfxbase.i"
  113.     include    "lvo/graphics_lib.i"
  114.     incdir    'videotracker:effect/'
  115.  
  116.     SECTION    1,CODE_C
  117. tus
  118. ;    move.l    #rotpt1,curpic1        ;picture !!!
  119. ;    move.l    #rotpt1,curpal1        ;picture !!!
  120.     bsr    paltabres
  121.     
  122.     move.l    ($4).w,a6
  123.     sub.l    a1,a1
  124.     jsr    -$126(a6)        ;findtask
  125.     move.l    d0,curtsk
  126.     move.l    d0,a0
  127.     move.l    $b8(a0),tskpri
  128.  
  129.     lea    dosnam,a1        ;doslib openen
  130.     moveq.l    #0,d0
  131.     move.l    (4).w,a6
  132.     jsr    -408(a6)        ;openlib
  133.     move.l    d0,doslib
  134.  
  135.     bsr.s    label5            ;videotracker opstarten
  136.     
  137.     move.l    curtsk,a0
  138.     move.l    tskpri,$b8(a0)
  139.     move.l    ($4).w,a6
  140.     jsr    -$84(a6)        ;forbid
  141.  
  142.     move.l    doslib,a1
  143.     move.l    (4).w,a6
  144.     jsr    -414(a6)        ;closelib
  145.  
  146.     moveq.l    #0,d0
  147.     rts
  148.     
  149. label5
  150.     move.l    (4).w,a6        ;workbench gedoe
  151.  
  152.     move.b    530(a6),ntscmode    ;50/60 hertz halen
  153.  
  154.     ifd    ntsctest
  155.     move.b    #60,ntscmode        ;60 hertz (ntsc)
  156.     endc
  157.  
  158.     cmp.b    #50,ntscmode        ;ntsc ?
  159.     beq.s    str.ntsc
  160.     move.l    #vew_hgt-56,hogscr    ;set NTSC screen hight
  161. str.ntsc
  162.  
  163.     lea    cprjmp,a2        ;copjmp zetten !
  164.     move.l    #cprbck-8,d0
  165.     move.w    d0,6(a2)
  166.     swap    d0
  167.     move.w    d0,2(a2)
  168.  
  169.     lea    cprbck-8,a2        ;copstr zetten !
  170.     move.l    #cpr,d0
  171.     move.w    d0,6(a2)
  172.     swap    d0
  173.     move.w    d0,2(a2)
  174.  
  175.     bsr    cprsprrem        ;sprites legen
  176.  
  177.     lea    gfxnam,a1        ;graphics lib openen
  178.     move.l    (4).w,a6
  179.     jsr    -408(a6)        ;openlib
  180.     move.l    d0,a6
  181.     move.l    d0,gfxlib
  182.     move.l    38(a6),oldcprlist
  183.  
  184.     bset    #1,$bfe001
  185.     bsr    copbuf            ;copper vullen
  186.  
  187.     bsr    sysoff
  188.  
  189. gadrun
  190.     btst    #6,($bfe001).l
  191.     bne    gadrun
  192.  
  193. scrend
  194. scrend.play
  195.     bsr    syson
  196.  
  197.     move.l    gfxlib,a1
  198.     move.l    (4).w,a6
  199.     jsr    -414(a6)        ;closelib
  200.  
  201. scrend.qb
  202.     moveq.l    #0,d0    
  203.     rts
  204.     
  205.     ;vertical blank interrupt, no blits.
  206.     ;handles counters,interlace,sprite
  207.     ;level 3
  208.  
  209. intvb
  210.     bra.s    intvb.cnt
  211.     dc.l    'VIDU'
  212.     dc.l    'LOOP'
  213. intvb.cnt
  214.     movem.l    d0-d7/a0-a6,-(sp)
  215.     lea    ($dff000).l,a6
  216.  
  217.     move.w    $01e(a6),d0
  218.     btst    #5,d0            ;vblank ?
  219.     bne.s    intvb.vb
  220.  
  221.     bra.s    intcop.end
  222.  
  223. intvb.vb
  224.     bsr    grap
  225.     bsr    palctr            ;palette zetten
  226.     bsr.s    copbuf            ;copper vullen
  227.     
  228. intvb.end
  229.     move.w    #$0020,$09c(a6)    ;vb bit wissen
  230.     movem.l    (sp)+,d0-d7/a0-a6    ;multitask uit, shit !
  231.     rte
  232.  
  233. intcop.end
  234.     movem.l    (sp)+,d0-d7/a0-a6
  235.     move.l    intvbold,-(sp)
  236.     rts
  237.  
  238.     ;transmission buffer empty routine, BLIT !
  239.     ;handles routines,animations
  240.     
  241. inttbe                    ;tbe interrupt
  242.     movem.l    d0-d7/a0-a6,-(sp)
  243.     lea    ($dff000).l,a6
  244.  
  245.     move.w    $01e(a6),d0
  246.     btst    #0,d0            ;no tbe ?
  247.     beq.s    intdskblk
  248.  
  249.  
  250.     btst    #6,($bfe001).l        ;muis ingedrukt ?
  251.     beq.s    inttbe.cop
  252.     btst    #2,($dff016).l
  253.     beq.s    inttbe.cop
  254.  
  255.     ifd    debug
  256.     move.w    #$700,$dff180
  257.     endc
  258.     
  259.     bsr    rotply            ;routineplayer BLIT !
  260.     bsr.s    copbuf            ;copper vullen
  261.  
  262.     ifd    debug
  263.     move.w    #$070,$dff180
  264.     endc
  265.     
  266. inttbe.cop
  267.  
  268. inttbe.end
  269.     move.w    #$0001,$09c(a6)
  270.     movem.l    (sp)+,d0-d7/a0-a6
  271.     rte
  272.  
  273. intdskblk
  274.     move.w    #$0001,$09c(a6)        ;be sure for no tbe handling
  275.     movem.l    (sp)+,d0-d7/a0-a6
  276.     move.l    inttbeold,-(sp)
  277.     rts
  278.  
  279.  
  280.     ;moves the copperbuffer to the copperlist
  281.     ;sort of double buffering
  282.     
  283. copbuf
  284.     movem.l    d0-d7/a0-a6,-(sp)
  285.  
  286.     lea    ($dff000).l,a6
  287.  
  288. copbuf.novb                ;copperchange overslaan
  289.     moveq.l    #0,d0
  290.     move.b    $005(a6),d0
  291.     lsl.w    #8,d0
  292.     moveq.l    #0,d1
  293.     move.b    $006(a6),d1
  294.     add.w    d1,d0
  295.  
  296.     cmp.w    #$4,d0            ;lower limit, all stations 100%
  297.     blt    copbuf.novb
  298.  
  299.     cmp.b    #50,ntscmode
  300.     beq.s    copbuf.pal
  301.     cmp.w    #$133-72-8,d0        ;ntsc grens
  302.     bge    copbuf.novb
  303.     bra.s    copbuf.cont
  304. copbuf.pal
  305.     cmp.w    #$133-8,d0        ;pal grens
  306.     bge    copbuf.novb
  307. copbuf.cont
  308.  
  309.     lea    gra.s,a0        ;buffer copieren
  310.     lea    cprbuf,a1
  311. copbuf_aga                ;AGA stuff :)
  312.     move.l    #(gra.ql)/4-1,d0
  313. copbuf.a
  314.     move.w    2(a0),2(a1)
  315.     add.l    #4,a0
  316.     add.l    #4,a1
  317.     dbra    d0,copbuf.a
  318.  
  319. copbuf.end
  320.     movem.l    (sp)+,d0-d7/a0-a6
  321.     rts
  322.  
  323.     ;goes back to the workbench
  324.     
  325. syson
  326.     movem.l    d0-d7/a0-a6,-(sp)
  327.  
  328.     move.w    #$0001,$dff09a        ;tbeint uit
  329.     move.l    intvbold,($6c).w
  330.     move.l    inttbeold,($64).w
  331.  
  332.     move.l    4,a6
  333.     jsr    -138(a6)        ;permit
  334.  
  335.     move.l    gfxlib,a6
  336.     jsr    -462(a6)        ;disownblitter
  337.  
  338.     move.l    wbview,a1
  339.     move.l    gfxlib,a6
  340.     jsr    _LVOLoadView(a6)     ; Fix view
  341.     jsr    _LVOWaitTOF(a6)
  342.     jsr    _LVOWaitTOF(a6)         ; wait for LoadView()
  343.  
  344. syson.ras
  345.     cmp.b    #$c0,$dff006        ;prevent copperjump
  346.     bne    syson.ras
  347.  
  348.     move.l    gfxlib,a6
  349.     move.l    gb_copinit(a6),$dff080     ; Kick it into life
  350.  
  351.     movem.l    (sp)+,d0-d7/a0-a6
  352.     rts
  353.     
  354.     ;goes back to the gadgetscreen
  355.     
  356. sysoff
  357.     movem.l    d0-d7/a0-a6,-(sp)
  358.      
  359.     move.l    gfxlib,a6
  360.     move.l    gb_ActiView(a6),wbview    ;current view
  361.     sub.l    a1,a1            ; clear a1
  362.     jsr     _LVOLoadView(a6)     ; Flush View to nothing
  363.     jsr    _LVOWaitTOF(a6)     ; Wait once
  364.     jsr    _LVOWaitTOF(a6)     ; Wait again.
  365.  
  366.     move.l    gfxlib,a6
  367.     jsr    -456(a6)        ;ownblitter
  368.  
  369.     move.l    4,a6
  370.     jsr    -132(a6)        ;forbid
  371.         
  372.     move.l    ($6c).w,intvbold
  373.     move.l    #intvb,($6c).w
  374.     move.l    ($64).w,inttbeold
  375.     move.l    #inttbe,($64).w
  376.     move.w    #$8001,$dff09a        ;tbeint aan
  377.     bsr    gracpr            ;reset copper
  378.     bsr    copbuf            ;copy copper
  379.     move.l    #cpr,$dff080
  380.  
  381.     movem.l    (sp)+,d0-d7/a0-a6
  382.     rts
  383.     
  384. cprsprrem
  385.     movem.l    d0-d7/a0-a6,-(sp)
  386.     lea    cprspr,a0
  387.     move.l    #sprdat,d0
  388.     move.w    #7,d1
  389. cprsprrem.a
  390.     move.w    d0,3*2(a0)
  391.     swap    d0
  392.     move.w    d0,1*2(a0)
  393.     swap    d0
  394.     add.l    #8,a0
  395.     dbra    d1,cprsprrem.a
  396.     movem.l    (sp)+,d0-d7/a0-a6
  397.     rts
  398.  
  399. varset                    ;variablen neerzetten
  400.     movem.l    d0-d7/a0-a6,-(sp)
  401.     move.l    #var,a0
  402.  
  403.     move.l    #cprbck,var_cprbck(a0)
  404.     move.l    gfxlib,var__GfxBase(a0)
  405.     move.b    ntscmode,var_ntsc(a0)
  406.  
  407.     move.l    curpic1,var_pic1(a0)    ;variabel
  408.     move.l    curpic2,var_pic2(a0)    ;variabel
  409.     move.w    anispd1,var_anispd1(a0)
  410.     move.w    anitel1,var_anitel1(a0)
  411.     move.b    anilop1,var_anilop1(a0)
  412.     move.l    #rottrg,var_rottrg(a0)
  413.     movem.l    (sp)+,d0-d7/a0-a6
  414.     rts
  415.     
  416.     ;this routine handles all videotracker-routines
  417.  
  418. rotply    
  419.     movem.l    d0-d7/a0-a6,-(sp)
  420.  
  421.     moveq.l    #0,d0
  422.  
  423.     lea    currot1,a2        ;routine 1
  424.     move.w    rotinf1,d0        ;routine info
  425.     bsr.s    rotplyr
  426.  
  427. rotply.end
  428.     movem.l    (sp)+,d0-d7/a0-a6
  429.     rts
  430.  
  431.     ;this routine handles 1 routine, BLIT !
  432.     
  433. rotplyr
  434.     movem.l    d0-d7/a1-a6,-(sp)
  435.  
  436.     move.l    #rot,(a2)        ;routinestart address !!!
  437.  
  438. ;    move.b    #50,ntscmode        ;ntsc/pal hz
  439.     clr.l    curpic2            ;background picture
  440.     move.w    #1,anispd1        ;animationspeed
  441.     clr.w    anitel1            ;animation position
  442.  
  443.     lea    var,a0            ;communication-table
  444. ;    move.l    #rotsrc,var_bck(a0)    ;colorset !!!
  445. ;    move.l    #rotst1,var_cols1+4(a0)    ;colorset !!!
  446. ;    move.l    #rotpt1,curpic1        ;picture !!!
  447. ;    move.l    #rotpt1,curpal1        ;picture !!!
  448. ;    move.b    #0,anilop1        ;animloop off/on !!!
  449. ;    move.w    #32,anispd1        ;animdelay !!!
  450.     move.l    #routinemode,d0        ;routinemode !!!
  451.  
  452.     sub.l    a0,a0            ;picture info legen
  453.  
  454.     tst.l    (a2)            ;is er een routine ?
  455.     beq    rotplyr.end        ;interlace handling
  456.  
  457.     move.l    intdel,d2        ;delay
  458.     move.l    inttel,d1        ;teller
  459.     cmp.w    d2,d1
  460.     blt    rotplyr.end
  461.     clr.l    inttel
  462.                 
  463.     bsr    varset            ;variabelen updaten
  464.  
  465.     move.l    (a2),a1            ;routine halen
  466.     move.l    #var,a0            ;variablen tabel
  467.  
  468.     movem.l    d3-d7/a1-a6,-(sp)
  469.     moveq.l    #0,d1            ;vars wissen
  470.     moveq.l    #0,d2
  471.     moveq.l    #0,d3
  472.     moveq.l    #0,d4
  473.     moveq.l    #0,d5
  474.     moveq.l    #0,d6
  475.     moveq.l    #0,d7
  476.     sub.l    a2,a2
  477.     sub.l    a3,a3
  478.     sub.l    a4,a4
  479.     sub.l    a5,a5
  480.  
  481.     jsr    4(a1)            ;routine afwerken
  482.     movem.l    (sp)+,d3-d7/a1-a6
  483.  
  484.     ;Routine:
  485.     ;
  486.     ;Input:
  487.     ;a0=variabelentabel
  488.     ;d0=routinemode
  489.     ;
  490.     ;Output:
  491.     ;a0=picture
  492.     ;d1=copperlist
  493.     ;d2=interruptdelay        (NOT used till now)
  494.     
  495.     move.w    #$0020,$dff09a        ;vb off !
  496.  
  497.     move.l    d2,intdel        ;delay
  498.  
  499.     lea    cprjmp,a3
  500.     move.l    #cprbck-8,d0
  501.  
  502.     cmp.l    (a2),a1            ;routine ondertussen gewipt ?
  503.     bne.s    rotplyr.nocop
  504.     tst.l    d1            ;copperlist ?
  505.     beq.s    rotplyr.nocop
  506.     move.l    d1,d0
  507. rotplyr.nocop
  508.     move.w    d0,6(a3)
  509.     swap    d0
  510.     move.w    d0,2(a3)
  511.  
  512.     cmp.l    #0,a0            ;picture ?
  513. ;    beq.s    rotplyr.endvb
  514.     beq.s    rotplyr.set
  515.  
  516.     move.l    a0,curpal1        ;current palette
  517.  
  518. ;    move.l    #rotpt1,a0        ;picture !!!
  519.  
  520.     move.l    (a0),a1
  521.     cmp.l    #'PALE',(a1)        ;palette ?
  522.     beq    rotplyr.set
  523.  
  524.     move.l    a0,curpic1        ;current picture (cycle)
  525.     tst.b    rotdpl            ;plane is geleverd
  526.     beq.s    rotplyr.set
  527.     clr.l    cycdel1            ;cycle info wissen
  528.     clr.l    4+cycdel1
  529.     clr.l    curfrm1            ;curfrm1, altijd planes zetten
  530. rotplyr.set
  531.     clr.b    rotdpl
  532.     clr.b    dplctr
  533.     bsr.s    grap
  534.     bsr    grac            ;colorset
  535. rotplyr.endvb
  536.     move.w    #$8020,$dff09a
  537. rotplyr.end
  538.     movem.l    (sp)+,d0-d7/a1-a6
  539.     rts
  540.  
  541.     ;removes possible routine-coppers
  542.     
  543. gracpr
  544.     movem.l    d0-d7/a0-a6,-(sp)
  545.     lea    cprjmp,a3
  546.     move.l    #cprbck-8,d0        ;copperlist resetten
  547.     move.w    d0,6(a3)
  548.     swap    d0
  549.     move.w    d0,2(a3)
  550.     movem.l    (sp)+,d0-d7/a0-a6
  551.     rts
  552.  
  553. grap                    ;d7=anim
  554.     movem.l    d0-d7/a0-a6,-(sp)
  555.  
  556.     clr.l    d7
  557.  
  558.     tst.l    curpic1            ;current picture ?
  559.     beq    grap.end
  560.  
  561.     move.l    curpic1,a2        ;normal pic halen
  562.  
  563.     lea    gracprscr,a1        ;window neerzetten
  564.     move.l    hogscr,d1
  565.  
  566.     move.w    pic_hgt(a2),d3        ;pic hoogte
  567.     move.w    pic_vew(a2),d5
  568.     btst    #2,d5            ;interlace ?
  569.     beq.s    grap.nohi4
  570.     lsr.w    #1,d3            ;/2
  571. grap.nohi4
  572.     cmp.w    d3,d1
  573.     bge.s    grap.hog
  574.     move.w    d1,d3
  575. grap.hog
  576.     sub.w    d3,d1
  577.     lsr.w    #1,d1
  578.     add.w    #win_str,d1
  579.     move.w    d1,d2
  580.     add.w    d3,d2
  581.  
  582.     move.b    d1,2(a1)        ;y start
  583.     move.b    d2,6(a1)        ;y end
  584.  
  585.     move.w    pic_wid(a2),d4        ;pic breedte in bytes
  586.     lsl.l    #3,d4
  587.  
  588.     move.l    #vew_wid*8,d0
  589.     move.l    #0,d1
  590.     move.l    #$61,d6
  591.  
  592.     cmp.w    #40,pic_wid(a2)        ;overscan ?
  593.     ble.s    grap.noov1
  594.     move.l    #$41,d6
  595. grap.noov1
  596.  
  597.     move.w    pic_vew(a2),d5
  598.     btst    #15,d5            ;hires ?
  599.     beq.s    grap.nohi2
  600.  
  601.     move.l    #(vew_wid)*8*2,d0
  602.     move.l    #1,d1
  603.     move.l    #$61,d6
  604.  
  605.     cmp.w    #80,pic_wid(a2)        ;overscan ?
  606.     ble.s    grap.nohi2
  607.     move.l    #(vew_wid)*8*2,d0
  608.     move.l    #$51,d6
  609.  
  610.     bra.s    grap.noshi2
  611. grap.nohi2    
  612.     btst    #6,d5            ;super hires ?
  613.     beq.s    grap.noshi2
  614.  
  615.     move.l    #(vew_wid)*8*4,d0
  616.     move.l    #2,d1
  617.     move.l    #$61,d6
  618.  
  619.     cmp.w    #80*2,pic_wid(a2)    ;overscan ?
  620.     ble.s    grap.noshi2
  621.     move.l    #(vew_wid)*8*4,d0
  622.     move.l    #$51,d6
  623.  
  624. grap.noshi2    
  625.  
  626.     clr.w    d5
  627.     cmp.w    d0,d4            ;breeder dan scherm ?
  628.     ble.s    grap.c
  629.     move.w    d4,d5
  630.     move.w    d0,d4
  631.     sub.w    d0,d5            ;modulo
  632.     lsr.w    #3,d5            ;/8
  633. grap.c
  634.     lsr.w    d1,d0
  635.     lsr.w    d1,d4
  636.  
  637.     move.w    d0,d2
  638.     sub.w    d4,d2
  639.     lsr.w    #1,d2            ;/2
  640.  
  641.     add.w    d6,d2
  642.     move.b    d2,3(a1)        ;x start
  643.     move.w    d2,d3            ;d3 bewaren !
  644.  
  645.     add.w    d4,d2            ;d4 bewaren !
  646.     move.b    d2,7(a1)        ;x end
  647.     
  648.     move.w    pic_vew(a2),d6
  649.     btst    #15,d6            ;hires ?
  650.     beq.s    grap.nohi5    
  651.     add.l    d4,d4            ;*2
  652.     bra.s    grap.noshi5
  653. grap.nohi5
  654.     btst    #6,d6            ;super hires ?
  655.     beq.s    grap.noshi5    
  656.     add.l    d4,d4            ;*4
  657.     add.l    d4,d4
  658. grap.noshi5
  659.  
  660.     move.l    d7,-(sp)
  661.     move.w    pic_vew(a2),d6
  662.     move.l    #17,d0
  663.     move.l    #4,d1            ;ecs 1
  664.     move.l    #3,d7
  665.  
  666.     btst    #15,d6            ;hires ?
  667.     beq.s    grap.nohi3    
  668.     move.l    #17,d0            ;ecs 9
  669.     move.l    #4,d1            ;ecs 2
  670.     move.l    #2,d7
  671.     bra.s    grap.noshi3
  672. grap.nohi3
  673.     btst    #6,d6            ;super hires ?
  674.     beq.s    grap.noshi3    
  675.     move.l    #17,d0            ;ecs 9
  676.     move.l    #4,d1            ;ecs 2
  677.     move.l    #1,d7
  678. grap.noshi3
  679.     sub.w    d0,d3
  680.     lsr.w    #1,d3
  681.     move.w    d3,10(a1)        ;ddfstrt
  682.     
  683.     move.w    d4,d2            ;pic breedte in pixels
  684.     lsr.w    #4,d2            ;/16
  685.     sub.w    d1,d2            ;-1
  686.  
  687.     lsl.w    d7,d2            ;*8
  688.     add.w    d2,d3
  689.     move.w    d3,14(a1)        ;ddfstop
  690.     move.l    (sp)+,d7
  691.     
  692.     lea    pic_raw(a2),a0
  693.  
  694.     moveq.l    #0,d2
  695.     move.w    pic_dpt(a2),d2
  696.     sub.l    #1,d2
  697.     muls    pic_wid(a2),d2
  698.     add.w    d2,d5
  699.  
  700.     move.w    pic_vew(a2),d2        ;viewmode add
  701.     btst    #2,d2
  702.     beq.s    grap.nolace4
  703.  
  704.     moveq.l    #0,d2
  705.     move.w    pic_dpt(a2),d2
  706.     muls    pic_wid(a2),d2
  707.     add.w    d2,d5            ;interlace gedoe
  708. grap.nolace4
  709.  
  710.     lea    gracprbpl,a4        ;iffpln neerzetten
  711.     lea    gracprpln,a0        ;iffpln neerzetten
  712.     moveq.l    #0,d2
  713.     move.w    pic_dpt(a2),d2        ;plnnummer 1 halen
  714.     move.l    #8,d6            ;copper step !
  715.  
  716.     tst.l    curpic2            ;2de picture ?
  717.     bne.s    grap.pic2
  718. grap.nopic2
  719.     move.w    d5,34(a1)        ;modulo oneven zetten
  720.     bra    grap.nodpl
  721. grap.pic2
  722.     move.l    curpic2,a3        ;oneven plane
  723.     move.l    curpic2+4,a6        ;oneven plane
  724.     move.l    currot2,a5        ;oneven plane
  725.     clr.l    curpic2            ;mischien niet goed
  726.     clr.l    curpic2+4        ;mischien niet goed
  727.     clr.l    curpal2            ;mischien niet goed
  728.     clr.l    currot2            ;mischien niet goed
  729.  
  730.     cmp.l    curpic1,a3        ;picture hetzelfde ?
  731.     beq.s    grap.nopic2
  732.     
  733.     cmp.l    #0,currot1        ;routine ?    
  734.     beq.s    grap.norot
  735.     cmp.l    currot1,a5        ;routine hetzelfde ?
  736.     beq.s    grap.nopic2
  737. grap.norot
  738.     cmp.b    #4,d2            ;> 16 kleuren ? (AGA)
  739.     bgt    grap.nopic2
  740.  
  741.     move.w    pic_dpt(a3),d3        ;plnnummer 2 halen
  742.     cmp.b    d2,d3            ;gelijke plnummers ?
  743.     bne.s    grap.nopic2
  744.     move.w    pic_vew(a2),d1
  745.     cmp.w    pic_vew(a3),d1        ;view gelijk ?
  746.     bne.s    grap.nopic2
  747.  
  748.     move.w    pic_vew(a2),d1        ;groter dan view test
  749.     btst    #6,d1            ;super hires ?
  750.     beq.s    grap.nohi2a
  751.     move.l    #vew_wid*4,d1
  752.     bra.s    grap.nohi2b
  753. grap.nohi2a
  754.     btst    #15,d1            ;hires ?
  755.     beq.s    grap.noshi2a
  756.     move.l    #vew_wid*2,d1
  757.     bra.s    grap.nohi2b
  758. grap.noshi2a
  759.     move.l    #vew_wid,d1
  760. grap.nohi2b
  761.     cmp.w    pic_wid(a2),d1        ;breder dan view ?
  762.     bgt.s    grap.small
  763.     cmp.w    pic_wid(a3),d1        ;breder dan view ?
  764.     bgt.s    grap.small
  765.  
  766.     move.w    pic_vew(a2),d1
  767.     btst    #2,d1
  768.     beq.s    grap.nolace8a
  769.     move.l    hogscr,d1
  770.     add.l    d1,d1
  771.     bra.s    grap.nolace8b
  772. grap.nolace8a
  773.     move.l    hogscr,d1
  774. grap.nolace8b
  775.     cmp.w    pic_hgt(a2),d1        ;hoger dan view ?
  776.     bgt.s    grap.small
  777.     cmp.w    pic_hgt(a3),d1        ;hoger dan view ?
  778.     bgt.s    grap.small
  779.     bra.s    grap.big
  780.  
  781. grap.small
  782.     move.w    pic_hgt(a2),d1        ;wid+hgt<vew
  783.     cmp.w    pic_hgt(a3),d1        ;hoogte gelijk ?
  784.     bne    grap.nopic2
  785.     move.w    pic_wid(a2),d1
  786.     cmp.w    pic_wid(a3),d1        ;breedte gelijk ?
  787.     bne    grap.nopic2
  788.  
  789. grap.big
  790.     move.l    a3,curpic2        ;toch wel goed !
  791.     move.l    a6,curpic2+4
  792.     move.l    a3,curpal2
  793.     move.l    a5,currot2
  794.  
  795.     tst.b    dplctr            ;dual playfield al gezet ?
  796.     beq    grap.nocop
  797.  
  798.     move.w    30(a1),34(a1)        ;modulo copieren
  799.  
  800.     move.w    2(a4),d1        ;bplcon0
  801.     btst    #10,d1            ;al dual playfield ?
  802.     beq.s    grap.ta
  803.  
  804.     move.w    2(a0),10(a0)        ;plane 0>1 copieren
  805.     move.w    6(a0),14(a0)
  806.  
  807.     move.w    18(a0),26(a0)        ;plane 2>3 copieren
  808.     move.w    22(a0),30(a0)
  809.  
  810.     move.w    34(a0),42(a0)        ;plane 4>5 copieren
  811.     move.w    38(a0),46(a0)
  812.  
  813.     move.w    50(a0),58(a0)        ;plane 6>7 copieren
  814.     move.w    54(a0),62(a0)
  815.  
  816.     bra.s    grap.tb
  817. grap.ta
  818.     move.w    24(a0),58(a0)        ;plane 3>7 copieren
  819.     move.w    28(a0),62(a0)
  820.  
  821.     move.w    18(a0),42(a0)        ;plane 2>5 copieren
  822.     move.w    22(a0),46(a0)
  823.  
  824.     move.w    10(a0),26(a0)        ;plane 1>3 copieren
  825.     move.w    14(a0),30(a0)
  826.  
  827.     move.w    2(a0),10(a0)        ;plane 0>1 copieren
  828.     move.w    6(a0),14(a0)
  829.  
  830. grap.tb
  831.     move.l    #palette,a3        ;palette copieren
  832.  
  833.     move.w    #16-1,d1
  834. grap.pal
  835.     move.l    (a3)+,60(a3)
  836.     dbra    d1,grap.pal
  837.  
  838. grap.nocop
  839.     add.w    d3,d2            ;aantal bitplanes
  840.     cmp.w    #8,d2            ;8 bitplanes ?
  841.     blt    grap.no8planes2
  842.     move.w    #%10000,d2        ;only bit 4
  843.     bra    grap.8planes2
  844. grap.no8planes2
  845.     lsl.w    #8,d2
  846.     lsl.w    #4,d2
  847. grap.8planes2
  848.     or.w    #$400,d2        ;dual playfield aan
  849.     move.w    d2,2(a4)        ;bplcon0
  850.  
  851.     movem.l    d0-d7/a0-a6,-(sp)
  852.  
  853.     move.l    curpic,a2        ;animpic ?
  854.     move.l    curfrm,d7
  855.     cmp.l    #0,a2
  856.     bne.s    grap.noanipic
  857.  
  858.     move.l    curpic2,a2        ;normal pic ?
  859.     move.l    curfrm2,d7
  860.     cmp.l    #0,a2
  861.     beq.s    grap.nodplpic
  862.  
  863. grap.noanipic
  864.     add.l    d6,a0
  865.     add.w    d6,d6
  866.     bsr.s    grappln            ;a2,d6,d7,d0
  867. grap.nodplpic
  868.     movem.l    (sp)+,d0-d7/a0-a6
  869.     add.w    d6,d6
  870.     bra.s    grap.nodpla
  871.  
  872.  
  873. grap.nodpl                ;geen dual playfield
  874.     cmp.w    #8,d2            ;8 bitplanes ?
  875.     blt    grap.no8planes
  876.     move.w    #%10000,d2        ;only bit 4
  877.     bra    grap.8planes
  878. grap.no8planes
  879.     lsl.w    #8,d2
  880.     lsl.w    #4,d2
  881. grap.8planes
  882.     move.w    d2,2(a4)        ;bplcon0
  883.  
  884. grap.nodpla
  885.     move.w    d5,30(a1)        ;modulo even
  886.  
  887.     moveq.l    #0,d3
  888.     add.w    pic_vew(a2),d3        ;viewmode add
  889.     moveq.l    #0,d2
  890.     move.w    2(a4),d2
  891.     or.l    d3,d2
  892.  
  893.     ifd    gui
  894.     tst.b    genlck
  895.     bne    grap.genset
  896.     endc
  897.  
  898.     or.l    #$100,d2        ;genlock off ($302)
  899.  
  900.     ifd    gui
  901.     bra    grap.gencont
  902. grap.genset
  903.     or.l    #$102,d2        ;genlock on ($302)
  904. grap.gencont
  905.     endc
  906.     
  907.     move.w    d2,2(a4)
  908.     
  909.     bsr.s    grappln            ;a2,d6,d7,d0
  910.  
  911. grap.end
  912.     
  913.     movem.l    (sp)+,d0-d7/a0-a6
  914.     rts
  915.         
  916.  
  917.     ;sets on of the 2 possible pictures to the copper
  918.     ;handles interlace
  919.  
  920.     ;d7=framenummer
  921.     ;d6=copperliststap
  922.     ;d0=raw planes positie
  923.     ;a2=current picture
  924. grappln                    ;planes invullen 
  925.     movem.l    d0-d7/a0-a6,-(sp)
  926.  
  927.     lea    pic_raw(a2),a1
  928.     move.l    a1,d0            ;raw planes
  929.     
  930.     moveq.l    #0,d2            ;x*y
  931.     move.w    pic_wid(a2),d2
  932.     lsr.l    #1,d2            ;/2
  933.     moveq.l    #0,d3
  934.     move.w    pic_hgt(a2),d3
  935.     muls    d3,d2
  936.     
  937.     move.l    d2,d4
  938.     add.l    d2,d2
  939.  
  940.     move.w    pic_dpt(a2),d3
  941.     muls    d3,d4            ;hele picture size
  942.     muls    d7,d4            ;frame*size d7 !
  943.  
  944.     add.l    d4,d4
  945.  
  946.     add.l    d4,d0
  947.  
  948.     move.l    #vew_wid,d5        ;max x view
  949.     move.l    hogscr,d4        ;max y view
  950.     move.w    pic_vew(a2),d1        ;viewmode add
  951.     btst    #2,d1
  952.     beq.s    grappln.nolace
  953.     add.l    d4,d4            ;max y view
  954. grappln.nolace
  955.     btst    #15,d1            ;hires ?
  956.     beq.s    grappln.nohi
  957.     move.l    #vew_wid*2,d5        ;max x view
  958.     bra.s    grappln.noshi
  959. grappln.nohi
  960.     btst    #6,d1            ;super hires ?
  961.     beq.s    grappln.noshi
  962.     move.l    #vew_wid*4,d5        ;max x view
  963. grappln.noshi
  964.  
  965.     moveq.l    #0,d3            ;scherm centreren
  966.     move.w    pic_wid(a2),d3        ;pic breedte in bytes
  967.     cmp.w    d5,d3            ;breder dan scherm ?
  968.     ble.s    grappln.qa
  969.     sub.w    d5,d3            ;-scherm breedte
  970.     lsr.w    #2,d3            ;/4
  971.  
  972.     add.l    d3,d3
  973.  
  974.     add.l    d3,d0
  975. grappln.qa
  976.     move.w    pic_hgt(a2),d3        ;pic hoogte in bytes
  977.     cmp.w    d4,d3            ;hoger dan scherm ?
  978.     ble.s    grappln.qb
  979.     sub.w    d4,d3            ;-scherm breedte
  980.     lsr.w    #1,d3            ;/2
  981.     moveq.l    #0,d5
  982.     move.w    pic_wid(a2),d5        ;pic breedte in bytes
  983.     muls    pic_dpt(a2),d5
  984.     muls    d5,d3
  985.     add.l    d3,d0
  986. grappln.qb
  987.     moveq.l    #0,d2
  988.     move.w    pic_wid(a2),d2
  989.  
  990.     move.w    pic_vew(a2),d5        ;interlace flipping ?
  991.     btst    #2,d5
  992.     beq.s    grappln.nolac7b
  993.  
  994.     move.w    $04(a6),d5        ;even/oneven ?
  995.     btst    #15,d5
  996.     beq.s    grappln.nolac7b
  997.     
  998.     moveq.l    #0,d3
  999.     move.w    pic_wid(a2),d3
  1000.     muls    pic_dpt(a2),d3
  1001.     add.l    d3,d0
  1002. grappln.nolac7b
  1003.  
  1004.     move.w    pic_dpt(a2),d1        ;plnnummer 1 halen
  1005.     tst.w    d1            ;0 planes ?
  1006.     beq    grappln.end
  1007.     sub.w    #1,d1
  1008. grappln.a
  1009.     move.w    d0,3*2(a0)
  1010.     swap    d0
  1011.     move.w    d0,1*2(a0)
  1012.     swap    d0
  1013.     add.l    d6,a0            ;d6=copper step !
  1014.     add.l    d2,d0
  1015.     dbra    d1,grappln.a
  1016.  
  1017.     cmp.w    #8,pic_dpt(a2)        ;8 planes ?
  1018.     bne    grappln.noham8
  1019.     btst    #3,pic_vew(a2)        ;ham ?
  1020.     beq    grappln.noham8
  1021.  
  1022.     move.w    -14(a0),d0        ;get 6
  1023.     move.w    -10(a0),d1
  1024.     move.w    -6(a0),d2        ;get 7
  1025.     move.w    -2(a0),d3
  1026.     move.w    -18(a0),-2(a0)        ;5>7
  1027.     move.w    -22(a0),-6(a0)        ;5>7
  1028.     move.w    -26(a0),-10(a0)        ;4>6
  1029.     move.w    -30(a0),-14(a0)        ;4>6
  1030.     move.w    -34(a0),-18(a0)        ;3>5
  1031.     move.w    -38(a0),-22(a0)        ;3>5
  1032.     move.w    -42(a0),-26(a0)        ;2>4
  1033.     move.w    -46(a0),-30(a0)        ;2>4
  1034.     move.w    -50(a0),-34(a0)        ;1>3
  1035.     move.w    -54(a0),-38(a0)        ;1>3
  1036.     move.w    -58(a0),-42(a0)        ;0>2
  1037.     move.w    -62(a0),-46(a0)        ;0>2
  1038.     move.w    d0,-62(a0)        ;6>0
  1039.     move.w    d1,-58(a0)        ;6>0
  1040.     move.w    d2,-54(a0)        ;7>1
  1041.     move.w    d3,-50(a0)        ;7>1
  1042. grappln.noham8
  1043.  
  1044. grappln.end
  1045.     movem.l    (sp)+,d0-d7/a0-a6
  1046.     rts
  1047.  
  1048.     ;sets palettes to palette-buffer
  1049.     
  1050. grac
  1051.     movem.l    d0-d7/a0-a6,-(sp)
  1052.  
  1053.     lea    curpal1,a3        ;palette 1
  1054.     move.l    #palette,a1
  1055.     bsr.s    gracfrm
  1056.  
  1057.     lea    curpal2,a3        ;palette 2 (dpl)
  1058.     move.l    #16*4+palette,a1
  1059.     bsr.s    gracfrm
  1060.     
  1061.     bsr    palctr            ;palette-buffer to copper
  1062. grac.end
  1063.     movem.l    (sp)+,d0-d7/a0-a6
  1064.     rts
  1065.         
  1066.     ;moves palette from picture to palette-buffer
  1067.  
  1068. gracfrm
  1069.     movem.l    d0-d7/a0-a6,-(sp)
  1070.     tst.l    (a3)            ;palette aanwezig ?
  1071.     beq.s    gracfrm.end
  1072.  
  1073.     move.l    (a3),a2            ;current palette
  1074.     
  1075.     cmp.l    #'PALE',(a2)        ;palette ?
  1076.     bne.s    gracfrm.pict
  1077.     lea    6(a2),a0        ;palette
  1078.     move.w    4(a2),d0        ;aantal kleuren
  1079.     bra.s    gracfrm.col
  1080. gracfrm.pict
  1081.     cmp.l    #'ANIM',(a2)        ;animatie ?
  1082.     bne.s    gracfrm.noanim
  1083.  
  1084.     moveq.l    #0,d1
  1085.     move.w    pic_ani(a2),d1
  1086.     bclr    #7,d1            ;behandelbit weghalen
  1087.  
  1088.     moveq.l    #0,d3
  1089.     move.w    pic_wid(a2),d3
  1090.     lsr.w    #1,d3            ;/2
  1091.     muls    pic_hgt(a2),d3
  1092.     muls    pic_dpt(a2),d3
  1093.  
  1094.     add.l    d3,d3
  1095.  
  1096.     add.l    #pic_raw,d3
  1097.     move.l    d3,d5
  1098.  
  1099.     btst    #0,d1
  1100.     bne.s    gracfrm.buf2
  1101.     moveq.l    #0,d5
  1102. gracfrm.buf2
  1103.     add.l    d5,a2
  1104. gracfrm.noanim
  1105.     lea    pic_pal(a2),a0        ;palette
  1106.     move.w    pic_palnum(a2),d0
  1107.  
  1108.     tst.w    d0            ;0 planes ?
  1109.     beq.s    gracfrm.end
  1110. gracfrm.col
  1111. gracfrm.fa
  1112.     move.l    (a0)+,(a1)+
  1113.     dbra    d0,gracfrm.fa
  1114. gracfrm.end
  1115.     movem.l    (sp)+,d0-d7/a0-a6
  1116.     rts
  1117.     
  1118.     ;handles colorcycling in the palette-buffer
  1119.  
  1120. palcycctr
  1121.     movem.l    d0-d7/a0-a6,-(sp)
  1122.  
  1123.     move.l    curpic1,a2        ;current raw
  1124.     cmp.l    #0,a2
  1125.     beq.s    palcycctr.qb
  1126.     lea    cycdel1,a3        ;cycle delays
  1127.     move.l    #paltab,a4
  1128.     bsr    palcyc
  1129. palcycctr.qb
  1130.     move.l    curpic2,a2        ;current raw
  1131.     cmp.l    #0,a2
  1132.     beq.s    palcycctr.c
  1133.     lea    cycdel2,a3        ;cycle delays
  1134.     move.l    #16*2+paltab,a4
  1135.     bsr    palcyc
  1136. palcycctr.c
  1137.     movem.l    (sp)+,d0-d7/a0-a6
  1138.     rts
  1139.     
  1140.     ;copies palette-buffer to copper
  1141.  
  1142. palctr
  1143.     movem.l    d0-d7/a0-a6,-(sp)
  1144.  
  1145.     lea    gracprcol,a1        ;AGA
  1146.     move.l    #palette,a0
  1147.     move.l    #paltab,a2
  1148.     move.w    #8-1,d6
  1149. palctr.e
  1150.     move.w    #32-1,d7
  1151. palctr.d
  1152.     move.w    (a2)+,d0            ;get cycle-position
  1153.     move.w    (a0,d0),6(a1)            ;high RGB bits
  1154.     move.w    2(a0,d0),((32+1)*4)+6(a1)    ;low RGB bits
  1155.     add.l    #4,a1
  1156.     dbra    d7,palctr.d
  1157.     add.l    #((32+2)*4),a1
  1158.     dbra    d6,palctr.e
  1159. palctr.end
  1160.     movem.l    (sp)+,d0-d7/a0-a6
  1161.     rts
  1162.  
  1163.     ;reset palette tabel, for proper color cycling
  1164.  
  1165. paltabres
  1166.     movem.l    d0-d7/a0-a6,-(sp)
  1167.     lea    paltab,a0
  1168.     clr.l    d0
  1169.     move.w    #256-1,d1
  1170. paltabres.a
  1171.     move.w    d0,(a0)+
  1172.     add.w    #4,d0            ;aga color words, high RGB + low RGB
  1173.     dbra    d1,paltabres.a
  1174. paltabres.end
  1175.     movem.l    (sp)+,d0-d7/a0-a6
  1176.     rts
  1177.  
  1178.     ;colorcyclinghandling of a palette
  1179.  
  1180. palcyc
  1181.     movem.l    d0-d7/a0-a6,-(sp)
  1182.     move.w    #4-1,d7            ;4 cycles
  1183. palcyc.d
  1184.     tst.w    (a3)+            ;delay klaar ?
  1185.     bne.s    palcyc.c
  1186.     
  1187.     moveq.l    #0,d1
  1188.     move.b    pic_cycstr(a2),d1    ;start color
  1189.     lsl.b    #1,d1        ;*2
  1190.  
  1191.     moveq.l    #0,d2
  1192.     move.b    pic_cycend(a2),d2    ;end color
  1193.     lsl.b    #1,d2        ;*2
  1194.  
  1195.     moveq.l    #0,d3
  1196.     move.b    pic_cycadd(a2),d3    ;richting
  1197.  
  1198.     move.l    a4,a0            ;palette pointer
  1199.     move.l    a0,a1
  1200.     add.l    d1,a0            ;startcolor
  1201.     add.l    d2,a1            ;endcolor
  1202.     
  1203.     cmp.b    #1,d3            ;omhoog
  1204.     beq.s    palcyc.up    
  1205.     cmp.b    #3,d3            ;omlaag
  1206.     beq.s    palcyc.down
  1207.     bra.s    palcyc.i
  1208.  
  1209. palcyc.up                ;kleuren copieren
  1210.     move.w    (a1),d4            ;laatst color bewaren
  1211. palcyc.f                ;kleuren copieren
  1212.     cmp.l    a0,a1
  1213.     beq.s    palcyc.fa
  1214.     move.w    -(a1),2(a1)
  1215.     bra.s    palcyc.f
  1216. palcyc.fa
  1217.     move.w    d4,(a1)
  1218.     bra.s    palcyc.g    
  1219.     
  1220. palcyc.down
  1221.     move.w    (a0),d4            ;laatst color bewaren
  1222. palcyc.h                ;kleuren copieren
  1223.     cmp.l    a0,a1
  1224.     beq.s    palcyc.ha
  1225.     move.w    2(a0),(a0)+
  1226.     bra.s    palcyc.h
  1227. palcyc.ha
  1228.     move.w    d4,(a1)
  1229.  
  1230. palcyc.g
  1231.     move.b    pic_cycspd(a2),-1(a3)    ;delay zetten
  1232.     bra.s    palcyc.i
  1233. palcyc.c
  1234.     sub.w    #1,-2(a3)        ;cycle delay aftellen
  1235. palcyc.i
  1236.     add.l    #4,a2            ;next cycle info
  1237.     dbra    d7,palcyc.d
  1238.  
  1239. palcyc.qb
  1240.     movem.l    (sp)+,d0-d7/a0-a6
  1241.     rts
  1242.  
  1243.  
  1244.  
  1245. ;    SECTION    variabelen,DATA_c
  1246.  
  1247.     cnop    0,2
  1248. curtsk        dc.l    0
  1249. tskpri        dc.l    0
  1250. duplok        dc.l    0
  1251. inttel        dc.l    0
  1252. intdel        dc.l    0
  1253.  
  1254. form        dc.l    0
  1255. ifffil        dc.l    0
  1256. intvbold    dc.l    0
  1257. inttbeold    dc.l    0
  1258. patpos        dc.l    0
  1259. gfxlib        dc.l    0
  1260. doslib        dc.l    0
  1261. wbview      dc.l    0
  1262. mt_data        dc.l    0
  1263. memvid        dc.l    0
  1264. oldcprlist    dc.l    0
  1265. hogscr        dc.l    vew_hgt
  1266.  
  1267. inspos        dc.l    -1
  1268. anispd1        dc.w    1    ;nooit op 0 !
  1269. anispd2        dc.w    1
  1270.  
  1271.         cnop    0,2
  1272. varclr.s            ;start wissen
  1273. oldrot        dc.l    0
  1274. curpic        dc.l    0
  1275. curfrm        dc.l    0
  1276. cycdel1        ds.w    4
  1277. cycdel2        ds.w    4
  1278.  
  1279. rotinf1        dc.w    0
  1280. rotinf2        dc.w    0
  1281.  
  1282. effspd        dc.w    0
  1283. efflop        dc.b    0
  1284. anilop1        dc.b    0
  1285. anilop2        dc.b    0
  1286. anipal1        dc.b    0
  1287. anipal2        dc.b    0
  1288. rotdpl        dc.b    1
  1289. rottrg        dc.b    1
  1290. dplctr        dc.b    0
  1291.         cnop    0,2
  1292.  
  1293. insdat        ds.l    4
  1294. inspri        dc.l    0
  1295. instel        dc.w    0
  1296.  
  1297. cureff        dc.l    0
  1298. efftel        dc.w    0
  1299.  
  1300. curpal1        dc.l    0
  1301. curpal2        dc.l    0
  1302. currot1        dc.l    0
  1303. currot2        dc.l    0
  1304. curpic1        dc.l    0
  1305. curpic2        dc.l    0
  1306. anitel1        dc.w    0
  1307. anitel2        dc.w    0
  1308. curfrm1        dc.l    0
  1309. curfrm2        dc.l    0
  1310. oldfrm1        dc.l    0
  1311. oldfrm2        dc.l    0
  1312.  
  1313. varclr.e
  1314.         dc.l    0            ;wisruimte
  1315.     
  1316. varclr.ql    equ    varclr.e-varclr.s    ;wislengte
  1317.     
  1318. ntscmode    dc.b    0
  1319. end        dc.b    0
  1320.  
  1321. pronam    dc.b    'VideoTracker',0
  1322.     cnop    0,2
  1323. dosnam    dc.b    'dos.library',0
  1324.     cnop    0,4
  1325. gfxnam    dc.b    'graphics.library',0
  1326.     cnop    0,4
  1327.     
  1328.     cnop    0,4
  1329. gra.s            ;copperlist edit buffer
  1330. gracprscr
  1331.     dc.w    $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
  1332. gracprbpl
  1333.     dc.w    $100,$0000,$102,$0000,$104,$0020
  1334.     dc.w    $108,$0000,$10a,$0000,$1fc,$0003
  1335. gracprpln
  1336.     dc.w    $e0,$0000,$e2,$0000    ;1
  1337.     dc.w    $e4,$0000,$e6,$0000    ;2
  1338.     dc.w    $e8,$0000,$ea,$0000    ;3
  1339.     dc.w    $ec,$0000,$ee,$0000    ;4
  1340.     dc.w    $f0,$0000,$f2,$0000    ;5
  1341.     dc.w    $f4,$0000,$f6,$0000    ;6
  1342.     dc.w    $f8,$0000,$fa,$0000    ;7
  1343.     dc.w    $fc,$0000,$fe,$0000    ;8
  1344. gracprcol
  1345.     dc.w    $106,$0000
  1346.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1347.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1348.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1349.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1350.     dc.w    $106,$0200
  1351.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1352.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1353.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1354.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1355.  
  1356.     dc.w    $106,$2000
  1357.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1358.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1359.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1360.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1361.     dc.w    $106,$2200
  1362.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1363.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1364.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1365.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1366.  
  1367.     dc.w    $106,$4000
  1368.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1369.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1370.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1371.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1372.     dc.w    $106,$4200
  1373.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1374.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1375.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1376.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1377.  
  1378.     dc.w    $106,$6000
  1379.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1380.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1381.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1382.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1383.     dc.w    $106,$6200
  1384.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1385.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1386.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1387.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1388.  
  1389.     dc.w    $106,$8000
  1390.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1391.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1392.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1393.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1394.     dc.w    $106,$8200
  1395.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1396.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1397.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1398.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1399.  
  1400.     dc.w    $106,$a000
  1401.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1402.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1403.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1404.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1405.     dc.w    $106,$a200
  1406.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1407.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1408.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1409.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1410.  
  1411.     dc.w    $106,$c000
  1412.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1413.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1414.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1415.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1416.     dc.w    $106,$c200
  1417.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1418.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1419.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1420.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1421.  
  1422.     dc.w    $106,$e000
  1423.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1424.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1425.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1426.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1427.     dc.w    $106,$e200
  1428.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1429.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1430.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1431.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1432.  
  1433.     dc.w    $106,$1000
  1434.  
  1435. cprjmp
  1436.     dc.w    $080,0,$082,0
  1437. gra.e
  1438. gra.ql    equ    gra.e-gra.s        ;block lengte
  1439.  
  1440. cpr                    ;real copperlist
  1441.     dc.w    $0001,$fffe
  1442.     dc.w    $09c,$8001        ;tbeint
  1443. cprspr
  1444.     dc.w    $120,$0000,$122,$0000
  1445.     dc.w    $124,$0000,$126,$0000
  1446.     dc.w    $128,$0000,$12a,$0000
  1447.     dc.w    $12c,$0000,$12e,$0000
  1448.     dc.w    $130,$0000,$132,$0000
  1449.     dc.w    $134,$0000,$136,$0000
  1450.     dc.w    $138,$0000,$13a,$0000
  1451.     dc.w    $13c,$0000,$13e,$0000
  1452.  
  1453. cprbuf
  1454.     dc.w    $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
  1455.     dc.w    $100,$9000,$102,$0000,$104,$0020
  1456.     dc.w    $108,$0000,$10a,$0000,$1fc,$0003
  1457.  
  1458.     dc.w    $e0,$0000,$e2,$0000    ;0
  1459.     dc.w    $e4,$0000,$e6,$0000    ;1
  1460.     dc.w    $e8,$0000,$ea,$0000    ;2
  1461.     dc.w    $ec,$0000,$ee,$0000    ;3
  1462.     dc.w    $f0,$0000,$f2,$0000    ;4
  1463.     dc.w    $f4,$0000,$f6,$0000    ;5
  1464.     dc.w    $f8,$0000,$fa,$0000    ;6
  1465.     dc.w    $fc,$0000,$fe,$0000    ;7
  1466.  
  1467.     dc.w    $106,$0000
  1468.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1469.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1470.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1471.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1472.     dc.w    $106,$0200
  1473.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1474.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1475.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1476.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1477.  
  1478.     dc.w    $106,$2000
  1479.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1480.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1481.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1482.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1483.     dc.w    $106,$2200
  1484.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1485.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1486.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1487.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1488.  
  1489.     dc.w    $106,$4000
  1490.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1491.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1492.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1493.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1494.     dc.w    $106,$4200
  1495.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1496.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1497.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1498.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1499.  
  1500.     dc.w    $106,$6000
  1501.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1502.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1503.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1504.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1505.     dc.w    $106,$6200
  1506.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1507.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1508.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1509.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1510.  
  1511.     dc.w    $106,$8000
  1512.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1513.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1514.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1515.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1516.     dc.w    $106,$8200
  1517.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1518.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1519.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1520.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1521.  
  1522.     dc.w    $106,$a000
  1523.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1524.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1525.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1526.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1527.     dc.w    $106,$a200
  1528.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1529.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1530.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1531.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1532.  
  1533.     dc.w    $106,$c000
  1534.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1535.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1536.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1537.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1538.     dc.w    $106,$c200
  1539.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1540.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1541.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1542.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1543.  
  1544.     dc.w    $106,$e000
  1545.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1546.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1547.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1548.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1549.     dc.w    $106,$e200
  1550.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1551.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1552.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1553.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1554.  
  1555.     dc.w    $106,$1000
  1556.  
  1557.     dc.w    $080,0,$082,0
  1558. cprbuf.e
  1559.  
  1560.     dc.w    $088,$0000        ;copjmp2
  1561.     dc.w    $080,0,$082,0        ;moet achter cprbck blijven !
  1562. cprbck
  1563. sprdat
  1564.     dc.w    $ffff,$fffe
  1565.  
  1566. palette        ds.l    256        ;palette 24-bits, far out !
  1567. paltab        ds.w    256        ;palette cycle-tabel
  1568.  
  1569.     cnop    0,2
  1570. var    ds.b    $300    ;variabelen voor routines
  1571.  
  1572.     
  1573. ;    SECTION    10,CODE_C
  1574.         endc
  1575.  
  1576. ; this is the routine-source
  1577. ;**********************************************************************
  1578.  
  1579.  
  1580. rotpic_x    equ    40
  1581. rotpic_y    equ    vew_hgt
  1582. rotpic_d    equ    1
  1583.  
  1584. rotcop_y    equ    vew_hgt
  1585.         
  1586. ;    Input:
  1587. ;    a0=variabelen tabel
  1588. ;    d0=routinfo
  1589.  
  1590. ;    Output:
  1591. ;    a0=picture
  1592. ;    d1=copperlist
  1593.  
  1594.     SECTION    3,CODE
  1595.  
  1596.     cnop    0,8
  1597. rot
  1598. rotp
  1599.     ifnd    ocs
  1600.     dc.l    'ROTA'
  1601.     endc
  1602.     ifd    ocs
  1603.     dc.l    'ROTO'
  1604.     endc
  1605.     movem.l    d2-d7/a1-a6,-(sp)
  1606.  
  1607.     lea    ($dff000).l,a6        ;hardware
  1608.     lea    rot(pc),a5        ;prog base
  1609.  
  1610.     ifd    rout
  1611.     move.l    #rotc,a2
  1612.     endc
  1613.     move.l    a2,rotchp-rot(a5)
  1614.  
  1615. ;    move.l    #32768,d2
  1616. ;    bsr    getd7
  1617.  
  1618. ;rot.ea    
  1619. ;    move.l    #4,d2            ;hoogte
  1620. ;    bsr    getd7
  1621. ;    muls    #1380,d7
  1622. ;    move.l    d7,variabele1-rot(a5)
  1623.  
  1624. ;    move.l    #1,d2            ;breedte
  1625. ;    bsr    getd7
  1626. ;    muls    #6,d7
  1627. ;    move.l    d7,variabele7-rot(a5)
  1628.  
  1629. rot.end
  1630. ;    move.l    var_cprbck(a0),d1
  1631. ;    sub.l    #8,d1
  1632. ;    lea    rotcop1,a1        ;copperjump adres zetten
  1633. ;    move.l    rotbuf-rot(a5),d2    ;double buffer
  1634. ;    add.l    d2,a1
  1635. ;    move.w    d1,6(a1)
  1636. ;    swap    d1
  1637. ;    move.w    d1,2(a1)
  1638. ;    move.l    a1,a2
  1639. ;    add.l    #rotcprbck1ntsc,a2
  1640. ;    move.l    a1,a3
  1641. ;    add.l    #rotcprend1ntsc,a3
  1642. ;    move.l    a1,a4
  1643. ;    add.l    #rotcprbck1,a4
  1644.  
  1645. ;cop_str            equ    win_str-2
  1646. ;rotcprbck1_v        equ    (cop_str+rotpic_y-124)*$1000000+$29fffe
  1647. ;rotcprbck1ntsc_v    equ    (cop_str+rotpic_y-180)*$1000000+$29fffe
  1648. ;rotcprend1ntsc_v    equ    (cop_str+rotpic_y-60)*$1000000+$29fffe
  1649.  
  1650. ;    cmp.b    #50,var_ntsc(a0)    ;ntsc/pal frequence
  1651. ;    bne    rot.ntsc
  1652. ;    move.l    #rotcprbck1ntsc_v,(a2)    ;reset ntsc split (cprbck1ntsc)
  1653. ;    move.l    #rotcprend1ntsc_v,(a3)    ;reset ntsc end (cprend1ntsc)
  1654. ;    add.l    #rotcprbck1,a1
  1655. ;    move.l    #rotcprbck1_v,d0    ;pal split (cprbck1)
  1656. ;    bra    rot.split
  1657. ;rot.ntsc
  1658. ;    move.l    #rotcprbck1_v,(a4)    ;reset pal split (cprbck1)
  1659. ;    move.l    #$00880000,(a3)        ;set ntsc end (cprend1ntsc)
  1660. ;    add.l    #rotcprbck1ntsc,a1
  1661. ;    move.l    #rotcprbck1ntsc_v,d0    ;(cprbck1ntsc)
  1662. ;rot.split
  1663. ;    move.l    #$00880000,(a1)        ;set break
  1664. ;    move.l    var_cprbck(a0),a2
  1665. ;    cmp.b    #$ff,(a2)        ;menu uit ?
  1666. ;    bne    rot.a
  1667. ;    move.l    d0,(a1)
  1668. ;rot.a
  1669. ;    bsr    rotint            ;eventueel init
  1670.  
  1671.     bsr    rotvew
  1672.  
  1673.     move.l    rotchp-rot(a5),a0
  1674.     add.l    #rotpic-rotc,a0        ;picture
  1675.  
  1676.     add.l    rotbuf-rot(a5),a0
  1677.     eor.l    #rotpic.e-rotpic,rotbuf-rot(a5)
  1678.  
  1679.     clr.l    d1
  1680.     
  1681. ;    move.l    a5,d1
  1682. ;    add.l    #rotcop1-rot,d1        ;copperlist
  1683.     
  1684.     movem.l    (sp)+,d2-d7/a1-a6
  1685.     rts
  1686.  
  1687. getd7
  1688.     move.w    d0,d1
  1689.     divs    d2,d1
  1690.     and.l    #$ffff,d1
  1691.     move.l    d1,d7
  1692.     muls    d2,d1
  1693.     sub.w    d1,d0
  1694.     move.l    d0,d6
  1695.     add.l    #1,d7
  1696.     rts
  1697.  
  1698. ;rotint
  1699. ;    movem.l    d0-d7/a0-a6,-(sp)
  1700. ;
  1701. ;    move.l    a5,a1
  1702. ;    add.l    #rotcoptus.s-rot,a1
  1703. ;    tst.b    (a1)            ;init copper ?
  1704. ;    bne    rotint.end
  1705. ;
  1706. ;    move.l    #cop_str,d1
  1707. ;    
  1708. ;    move.w    #rotcop_y-1,d0
  1709. ;rotint.g
  1710. ;    move.b    d1,(a1)            ;y-raster
  1711. ;
  1712. ;    add.l    #rotcoptus_l,a1
  1713. ;    add.l    #1,d1
  1714. ;
  1715. ;    dbra    d0,rotint.g
  1716. ;
  1717. ;rotint.end    
  1718. ;    movem.l    (sp)+,d0-d7/a0-a6
  1719. ;    rts
  1720.  
  1721. rotvew
  1722.     movem.l    d0-d7/a0-a6,-(sp)
  1723.  
  1724.     move.l    rotchp-rot(a5),a3
  1725.     add.l    #rotpic-rotc,a3
  1726.     add.l    rotbuf-rot(a5),a3
  1727.     lea    pic_raw(a3),a3
  1728.  
  1729.     move.w    #0,$042(a6)            ;clear screen
  1730.     move.w    #$100+$f0,$040(a6)
  1731.  
  1732.     move.w    #0,$064(a6)
  1733.     move.w    #0,$066(a6)
  1734.  
  1735.     move.w    #0,$074(a6)            ;a dat
  1736.     move.l    #0,$044(a6)            ;mask
  1737.  
  1738.     move.l    a3,$054(a6)            ;destination
  1739.     move.w    #rotpic_y*64+(rotpic_x/2),$058(a6)
  1740. rotvew.wblit
  1741.     btst     #6,$002(a6)
  1742.     bne     rotvew.wblit
  1743.  
  1744.     bsr    rotpix
  1745.  
  1746. rotvew.end    
  1747.     movem.l    (sp)+,d0-d7/a0-a6
  1748.     rts
  1749.  
  1750. rotpix
  1751.     movem.l    d0-d7/a0-a6,-(sp)
  1752.  
  1753. ;    move.l    a5,d7
  1754. ;    add.l    #rotemp-rot,d7
  1755.     
  1756.     move.l    var_audstr(a0),a2
  1757.     move.l    var_audreplen(a0),d3
  1758.     cmp.l    #1,d3
  1759.     bne    rotpix.d1
  1760.     move.l    var_audlen(a0),d3
  1761. rotpix.d1
  1762.     add.l    d3,d3
  1763.     add.l    var_audlopstr(a0),d3
  1764.  
  1765.     move.l    #34642*2,d2
  1766.     tst.l    var_audper(a0)
  1767.     beq    rotpix.c1
  1768.     divs.w    2+var_audper(a0),d2
  1769.     ext.l    d2
  1770.     add.l    d2,var_audcnt(a0)
  1771.     move.l    var_audcnt(a0),d2
  1772.     add.l    d2,a2
  1773. rotpix.c1
  1774.         
  1775.     move.l    var_audstr+$20(a0),a4
  1776.     move.l    var_audreplen+$20(a0),d4
  1777.     cmp.l    #1,d4
  1778.     bne    rotpix.d2
  1779.     move.l    var_audlen+$20(a0),d4
  1780. rotpix.d2
  1781.     add.l    d4,d4
  1782.     add.l    var_audlopstr+$20(a0),d4
  1783.  
  1784.     move.l    #34642*2,d2
  1785.     tst.l    var_audper+$20(a0)
  1786.     beq    rotpix.c2
  1787.     divs.w    2+var_audper+$20(a0),d2
  1788.     ext.l    d2
  1789.     add.l    d2,var_audcnt+$20(a0)
  1790.     move.l    var_audcnt+$20(a0),d2
  1791.     add.l    d2,a4
  1792. rotpix.c2
  1793.         
  1794.     move.l    var_audstr+$40(a0),a5
  1795.     move.l    var_audreplen+$40(a0),d5
  1796.     cmp.l    #1,d5
  1797.     bne    rotpix.d3
  1798.     move.l    var_audlen+$40(a0),d5
  1799. rotpix.d3
  1800.     add.l    d5,d5
  1801.     add.l    var_audlopstr+$40(a0),d5
  1802.  
  1803.     move.l    #34642*2,d2
  1804.     tst.l    var_audper+$40(a0)
  1805.     beq    rotpix.c3
  1806.     divs.w    2+var_audper+$40(a0),d2
  1807.     ext.l    d2
  1808.     add.l    d2,var_audcnt+$40(a0)
  1809.     move.l    var_audcnt+$40(a0),d2
  1810.     add.l    d2,a5
  1811. rotpix.c3
  1812.         
  1813.     move.l    var_audstr+$60(a0),a6
  1814.     move.l    var_audreplen+$60(a0),d6
  1815.     cmp.l    #1,d6
  1816.     bne    rotpix.d4
  1817.     move.l    var_audlen+$60(a0),d6
  1818. rotpix.d4
  1819.     add.l    d6,d6
  1820.     add.l    var_audlopstr+$60(a0),d6
  1821.  
  1822.     move.l    #34642*2,d2
  1823.     tst.l    var_audper+$60(a0)
  1824.     beq    rotpix.c4
  1825.     divs.w    2+var_audper+$60(a0),d2
  1826.     ext.l    d2
  1827.     add.l    d2,var_audcnt+$60(a0)
  1828.     move.l    var_audcnt+$60(a0),d2
  1829.     add.l    d2,a6
  1830. rotpix.c4
  1831.  
  1832.     tst.w    d0
  1833.     bne    rotpix.g1
  1834.     bsr    rot4
  1835.     bra    rotpix.end
  1836. rotpix.g1
  1837.     cmp.w    #1,d0
  1838.     bne    rotpix.g2
  1839.     bsr    rotall
  1840.     bra    rotpix.end
  1841. rotpix.g2
  1842.  
  1843.  
  1844. rotpix.end    
  1845.     movem.l    (sp)+,d0-d7/a0-a6
  1846.     rts
  1847.  
  1848. rot4        
  1849.     movem.l    d0-d7/a0-a6,-(sp)
  1850.  
  1851.     add.l    #(rotpic_y/4)*rotpic_x*rotpic_d+1,a3
  1852.     move.l    a3,a1
  1853.     add.l    #(rotpic_y/2)*rotpic_x*rotpic_d,a1
  1854.  
  1855.     move.w    #(rotpic_x/2)-3,d1        ;bytes
  1856. rot4.c
  1857.  
  1858.     move.w    #8-1,d0                ;bits
  1859. rot4.a
  1860.     clr.l    d2
  1861.     cmp.l    a2,d3
  1862.     bgt    rot4.a1
  1863.     cmp.l    #1,var_audreplen(a0)
  1864.     beq    rot4.b1
  1865.     move.l    var_audlopstr(a0),a2
  1866.     sub.l    var_audstr(a0),a2
  1867.     move.l    a2,var_audcnt(a0)
  1868.     move.l    var_audlopstr(a0),a2
  1869.     move.l    var_audreplen(a0),d3
  1870.     add.l    d3,d3
  1871.     add.l    a2,d3
  1872. rot4.a1
  1873.     move.b    (a2)+,d2
  1874.     ext.w    d2
  1875.     lsr.l    #1,d2
  1876.     ext.w    d2
  1877.     ext.l    d2
  1878.     muls.w    #rotpic_x*rotpic_d,d2
  1879. rot4.b1
  1880.     bset    d0,(a3,d2)
  1881.  
  1882.     clr.l    d2
  1883.     cmp.l    a4,d4
  1884.     bgt    rot4.a2
  1885.     cmp.l    #1,var_audreplen+$20(a0)
  1886.     beq    rot4.b2
  1887.     move.l    var_audlopstr+$20(a0),a4
  1888.     sub.l    var_audstr+$20(a0),a4
  1889.     move.l    a4,var_audcnt+$20(a0)
  1890.     move.l    var_audlopstr+$20(a0),a4
  1891.     move.l    var_audreplen+$20(a0),d4
  1892.     add.l    d4,d4
  1893.     add.l    a4,d4
  1894. rot4.a2
  1895.     move.b    (a4)+,d2
  1896.     ext.w    d2
  1897.     lsr.l    #1,d2
  1898.     ext.w    d2
  1899.     ext.l    d2
  1900.     muls.w    #rotpic_x*rotpic_d,d2
  1901. rot4.b2
  1902.     bset    d0,rotpic_x/2(a3,d2)
  1903.  
  1904.     clr.l    d2
  1905.     cmp.l    a5,d5
  1906.     bgt    rot4.a3
  1907.     cmp.l    #1,var_audreplen+$40(a0)
  1908.     beq    rot4.b3
  1909.     move.l    var_audlopstr+$40(a0),a5
  1910.     sub.l    var_audstr+$40(a0),a5
  1911.     move.l    a5,var_audcnt+$40(a0)
  1912.     move.l    var_audlopstr+$40(a0),a5
  1913.     move.l    var_audreplen+$40(a0),d5
  1914.     add.l    d5,d5
  1915.     add.l    a5,d5
  1916. rot4.a3
  1917.     move.b    (a5)+,d2
  1918.     ext.w    d2
  1919.     lsr.l    #1,d2
  1920.     ext.w    d2
  1921.     ext.l    d2
  1922.     muls.w    #rotpic_x*rotpic_d,d2
  1923. rot4.b3
  1924.     bset    d0,rotpic_x/2(a1,d2)
  1925.  
  1926.     clr.l    d2
  1927.     cmp.l    a6,d6
  1928.     bgt    rot4.a4
  1929.     cmp.l    #1,var_audreplen+$60(a0)
  1930.     beq    rot4.b4
  1931.     move.l    var_audlopstr+$60(a0),a6
  1932.     sub.l    var_audstr+$60(a0),a6
  1933.     move.l    a6,var_audcnt+$60(a0)
  1934.     move.l    var_audlopstr+$60(a0),a6
  1935.     move.l    var_audreplen+$60(a0),d6
  1936.     add.l    d6,d6
  1937.     add.l    a6,d6
  1938. rot4.a4
  1939.     move.b    (a6)+,d2
  1940.     ext.w    d2
  1941.     lsr.l    #1,d2
  1942.     ext.w    d2
  1943.     ext.l    d2
  1944.     muls.w    #rotpic_x*rotpic_d,d2
  1945. rot4.b4
  1946.     bset    d0,(a1,d2)
  1947.  
  1948.     dbra    d0,rot4.a    
  1949.  
  1950.     add.l    #1,a3                ;next byte
  1951.     add.l    #1,a1                ;next byte
  1952.     dbra    d1,rot4.c
  1953.  
  1954. rot4.end    
  1955.     movem.l    (sp)+,d0-d7/a0-a6
  1956.     rts
  1957.  
  1958. rotall        
  1959.     movem.l    d0-d7/a0-a6,-(sp)
  1960.  
  1961.     add.l    #(rotpic_y/2)*rotpic_x*rotpic_d,a3
  1962.  
  1963.     move.w    #rotpic_x-1,d1        ;bytes
  1964. rotall.c
  1965.  
  1966.     move.w    #8-1,d0                ;bits
  1967. rotall.a
  1968.     clr.l    d2
  1969.     cmp.l    a2,d3
  1970.     bgt    rotall.a1
  1971.     cmp.l    #1,var_audreplen(a0)
  1972.     beq    rotall.b1
  1973.     move.l    var_audlopstr(a0),a2
  1974.     sub.l    var_audstr(a0),a2
  1975.     move.l    a2,var_audcnt(a0)
  1976.     move.l    var_audlopstr(a0),a2
  1977.     move.l    var_audreplen(a0),d3
  1978.     add.l    d3,d3
  1979.     add.l    a2,d3
  1980. rotall.a1
  1981.     move.b    (a2)+,d2
  1982.     ext.w    d2
  1983.     ext.l    d2
  1984.     muls.w    #rotpic_x*rotpic_d,d2
  1985. rotall.b1
  1986.     bset    d0,(a3,d2)
  1987.  
  1988.     clr.l    d2
  1989.     cmp.l    a4,d4
  1990.     bgt    rotall.a2
  1991.     cmp.l    #1,var_audreplen+$20(a0)
  1992.     beq    rotall.b2
  1993.     move.l    var_audlopstr+$20(a0),a4
  1994.     sub.l    var_audstr+$20(a0),a4
  1995.     move.l    a4,var_audcnt+$20(a0)
  1996.     move.l    var_audlopstr+$20(a0),a4
  1997.     move.l    var_audreplen+$20(a0),d4
  1998.     add.l    d4,d4
  1999.     add.l    a4,d4
  2000. rotall.a2
  2001.     move.b    (a4)+,d2
  2002.     ext.w    d2
  2003.     ext.l    d2
  2004.     muls.w    #rotpic_x*rotpic_d,d2
  2005. rotall.b2
  2006.     bset    d0,(a3,d2)
  2007.  
  2008.     clr.l    d2
  2009.     cmp.l    a5,d5
  2010.     bgt    rotall.a3
  2011.     cmp.l    #1,var_audreplen+$40(a0)
  2012.     beq    rotall.b3
  2013.     move.l    var_audlopstr+$40(a0),a5
  2014.     sub.l    var_audstr+$40(a0),a5
  2015.     move.l    a5,var_audcnt+$40(a0)
  2016.     move.l    var_audlopstr+$40(a0),a5
  2017.     move.l    var_audreplen+$40(a0),d5
  2018.     add.l    d5,d5
  2019.     add.l    a5,d5
  2020. rotall.a3
  2021.     move.b    (a5)+,d2
  2022.     ext.w    d2
  2023.     ext.l    d2
  2024.     muls.w    #rotpic_x*rotpic_d,d2
  2025. rotall.b3
  2026.     bset    d0,(a3,d2)
  2027.  
  2028.     clr.l    d2
  2029.     cmp.l    a6,d6
  2030.     bgt    rotall.a4
  2031.     cmp.l    #1,var_audreplen+$60(a0)
  2032.     beq    rotall.b4
  2033.     move.l    var_audlopstr+$60(a0),a6
  2034.     sub.l    var_audstr+$60(a0),a6
  2035.     move.l    a6,var_audcnt+$60(a0)
  2036.     move.l    var_audlopstr+$60(a0),a6
  2037.     move.l    var_audreplen+$60(a0),d6
  2038.     add.l    d6,d6
  2039.     add.l    a6,d6
  2040. rotall.a4
  2041.     move.b    (a6)+,d2
  2042.     ext.w    d2
  2043.     ext.l    d2
  2044.     muls.w    #rotpic_x*rotpic_d,d2
  2045. rotall.b4
  2046.     bset    d0,(a3,d2)
  2047.  
  2048.     dbra    d0,rotall.a    
  2049.  
  2050.     add.l    #1,a3                ;next byte
  2051.     dbra    d1,rotall.c
  2052.  
  2053. rotall.end    
  2054.     movem.l    (sp)+,d0-d7/a0-a6
  2055.     rts
  2056.  
  2057.  
  2058. rotchp        dc.l    0
  2059. rotbuf        dc.l    0
  2060. rotcopbuf    dc.l    0
  2061. rotbck        dc.l    0
  2062. rotpos        dc.l    0
  2063. rotcopstr    dc.l    $73
  2064.  
  2065. ;rotemp        ds.b    rotpic_x*4
  2066.  
  2067. rotp.e
  2068.  
  2069.     SECTION    4,CODE_c
  2070.  
  2071.     cnop    0,8
  2072. rotc
  2073.     ifnd    ocs
  2074.     dc.l    'ROTA'
  2075.     endc
  2076.     ifd    ocs
  2077.     dc.l    'ROTO'
  2078.     endc
  2079.     rts
  2080.         cnop    0,8
  2081. rotpic
  2082.         ifnd    ocs
  2083.         dc.l    'PICT'
  2084.         dc.w    rotpic_x,rotpic_y,rotpic_d,1,0
  2085.         ds.b    8*4
  2086.         ds.b    16
  2087.         dc.w    2-1
  2088.         dc.w    $000,0,$fff,0
  2089.         ds.l    256-2
  2090.         ds.b    rotpic_x*rotpic_y*rotpic_d
  2091.         endc
  2092.  
  2093.         ifd    ocs
  2094.         dc.l    'PICT'
  2095.         dc.w    rotpic_x,rotpic_y,rotpic_d,1,0
  2096.         ds.b    4*4
  2097.         dc.w    2-1
  2098.         dc.w    $000,$fff
  2099.         ds.w    256-2
  2100.         ds.b    rotpic_x*rotpic_y*rotpic_d
  2101.         endc
  2102. rotpic.e
  2103.  
  2104. rotpic2
  2105.         ifnd    ocs
  2106.         dc.l    'PICT'
  2107.         dc.w    rotpic_x,rotpic_y,rotpic_d,1,0
  2108.         ds.b    8*4
  2109.         ds.b    16
  2110.         dc.w    2-1
  2111.         dc.w    $000,0,$fff,0
  2112.         ds.l    256-2
  2113.         ds.b    rotpic_x*rotpic_y*rotpic_d
  2114.         endc
  2115.  
  2116.         ifd    ocs
  2117.         dc.l    'PICT'
  2118.         dc.w    rotpic_x,rotpic_y,rotpic_d,1,0
  2119.         ds.b    4*4
  2120.         dc.w    2-1
  2121.         dc.w    $000,$fff
  2122.         ds.w    256-2
  2123.         ds.b    rotpic_x*rotpic_y*rotpic_d
  2124.         endc
  2125.  
  2126. ;rotcop1
  2127. ;    dc.w    $80,0,$82,0
  2128. ;
  2129. ;rotcoptus.s
  2130. ;    dc.w    $003d,$fffe
  2131. ;    dc.w    $180,0,$180,0,$180,0,$180,0,$180,0,$180,0,$180,0,$180,0
  2132. ;    dc.w    $180,0,$180,0,$180,0,$180,0,$180,0,$180,0,$180,0,$180,0
  2133. ;    dc.w    $180,0,$180,0,$180,0,$180,0,$180,0,$180,0,$180,0,$180,0
  2134. ;    dc.w    $180,0,$180,0,$180,0,$180,0,$180,0,$180,0,$180,0,$180,0
  2135. ;    dc.w    $180,0,$180,0,$180,0,$180,0,$180,0,$180,0,$180,0,$180,0
  2136. ;rotcoptus.e
  2137. ;
  2138. ;    rept    rotcop_y-1
  2139. ;    dc.w    $003d,$fffe
  2140. ;    dc.w    $180,0,$180,0,$180,0,$180,0,$180,0,$180,0,$180,0,$180,0
  2141. ;    dc.w    $180,0,$180,0,$180,0,$180,0,$180,0,$180,0,$180,0,$180,0
  2142. ;    dc.w    $180,0,$180,0,$180,0,$180,0,$180,0,$180,0,$180,0,$180,0
  2143. ;    dc.w    $180,0,$180,0,$180,0,$180,0,$180,0,$180,0,$180,0,$180,0
  2144. ;    dc.w    $180,0,$180,0,$180,0,$180,0,$180,0,$180,0,$180,0,$180,0
  2145. ;    endr
  2146. ;    dc.w    $088,$000
  2147.  
  2148.  
  2149. ;rotcoptus_l    equ    rotcoptus.e-rotcoptus.s
  2150. ;rotcprbck1    equ    (rotcoptus_l*(rotpic_y-124))+8
  2151. ;rotcprbck1ntsc    equ    (rotcoptus_l*(rotpic_y-180))+8
  2152. ;rotcprend1ntsc    equ    (rotcoptus_l*(rotpic_y-60))+8
  2153.  
  2154. rotc.e
  2155. rot.e
  2156.  
  2157. ;**********************************************************************
  2158.  
  2159.